An integrated circuit comprises layers of a semiconductor, usually silicon, with specific areas and specific layers having different concentrations of electron and hole carriers and/or insulators. The electrical conductivity of the layers and of the distinct areas within the layers are determined by the concentration of dopants within the area. In turn, these distinct areas interact with one another to form transistors, diodes, and other electronic devices. These specific transistors and other devices may interact with each other by field interactions or by direct electrical interconnections. Openings or windows are created for electrical connections between the layers by a combination of masking, layering, and etching additional materials on top of the wafers. These electrical interconnections may be within the semiconductor or may lie above the semiconductor areas and layers using a complex mesh of conductive layers, usually metal such as platinum, gold, aluminum, tungsten, or copper, fabricated by deposition on the surface and selective removal, leaving the electrical interconnections. Insulative layers, e.g., silicon dioxide, may separate any of these semiconductor or connectivity layers. Depending upon the interconnection topology, transistors perform Boolean logic functions like AND, OR, NOT, NOR and are referred to as gates.
Meanwhile, several types of chips have been developed that take advantage of a modular approach having areas in which the transistors and their respective functions are fixed and other areas in which the transistors and their functions are totally or partially programmable/customizable. The different proportion of fixed to programmable modules in an integrated circuit is limited by factors such as complexity, cost, time, and design constraints. The field programmable gate array (FPGA) refers to a type of logic chip that can be reprogrammed. Because of the programmable features, FPGAs are flexible and modification is almost trivial but, on the other hand, FPGAs are very expensive and have the largest die size. The relative disadvantage of FPGAs, however, is its high cost per function, low speed, and high power consumption. FPGAs are used primarily for prototyping integrated circuit designs but once the design is set, faster hard-wired chips are produced. Programmable gate arrays (PGAs) are also flexible in the number of possible applications that can be achieved but are not quite as flexible as the FPGAs and are more time-consuming to modify and test. An application specific integrated circuit (ASIC) is another type of chip designed for a particular application. ASICs are efficient in use of power compared to FPGAs and are quite inexpensive to manufacture at high volumes. ASICs, however, are very complex to design and prototype because of their speed and quality. Application Specific Standard Products (ASSPs) are hard-wired chips that meet a specific need but this customization is both time-consuming and costly. An example of an ASSP might be a microprocessor in a heart pacemaker.
A digital system can be represented at different levels of abstraction to manage the description and design of complex systems with millions of logic gates, etc. For instance, a circuit diagram or a schematic of interconnected logic gates is a structural representation; a picture of a chip with pins extending from the black box/rectangle is a physical representation; and the behavioral representation, considered the highest level of abstraction, describes a system in terms of what it does, how it behaves, and specifies the relationship between the input and output signals. A behavioral description could be a Boolean expression or a more abstract description such as the data register transfer level logic (RTL). RTL descriptions are specified by the following three components: (1) the set of registers in the system or subsystem, such as a digital module; (2) the operations that are performed on the data stored in the registers; and (3) the control that supervises the sequence of the operations in the system.
Specialized electronic design automation (EDA) software, referred to as tools, intended to implement a more efficient process to design chips has been introduced. Integrated circuits are now designed with the EDA tools using hardware description languages, typically Verilog or VHDL. VHDL stands for VHSIC (Very High Speed Integrated Circuits) Hardware Description Language, the development of which was sponsored by the U.S. Department of Defense and the IEEE in the mid 1980s. VHDL and Verilog are only two hardware description languages but seem to have become the industry's standard languages to describe and simulate complex digital systems and incorporate timing specifications and gate delays, as well as describe the integrated circuit as a system of interconnected components. Execution of programs in hardware description languages are inherently parallel meaning that as soon as a new input arrives the commands corresponding to logic gates are executed in parallel. In this fashion, a VHDL or Verilog program mimics the behavior of a physical, usually digital, system.
In spite of the implementation of EDA tools, chip designers and testers still manually define the specification and address map for individual registers and internal memory, as well as separately and manually specify the implementation at the RTL, the verification testcases, and the firmware header file. Maintaining consistency and manually editing the multitude of minute modifications often required by this out-dated and tedious approach is very difficult and conducive to many mistakes. There is thus a need in the industry for an automated RULES ENGINE that verifies that a data entry and data changes in any one of the several hundred parameters will be checked for correctness and propagated throughout the entire chip design.